package day14;

import org.junit.Test;

import java.util.Set;
import java.util.TreeSet;

//测试TreeSet
public class TestTreeSet {
    //1.针对于基本类型，默认升序
    @Test
    public void tset1(){
        Set<Integer> set=new TreeSet<>(((o1, o2) -> o2-o1));
        set.add(100);
        set.add(200);
        set.add(70);
        set.add(60);
        set.add(70);
        set.add(710);
        set.add(10);
        set.add(6);
        System.out.println(set);
    }
    //2.String类型 按照比较Ascii码，做升序排序
    @Test
    public void tset2(){
        Set<String> set=new TreeSet<>();
        set.add("aaa");
        set.add("abc");
        set.add("AAA");
        set.add("qqq");
        set.add("111");
        set.add("111");
        System.out.println(set);
    }
    //对象类型，无法排序，需要手动传入比较器对象，实现排序规则
    @Test
    public void test3(){
        Set<Card> set=new TreeSet<>(((o1, o2) -> {
           int n= o2.num- o1.num;
           //bug：TreeSet  去重规则，结果为0
            if (n==0){
               n=o1.str.compareTo(o2.str);
            }
           return n;
        }));
        set.add(new Card("♥A",14));
        set.add(new Card("♦A",14));
        set.add(new Card("♣Q",12));
        set.add(new Card("♦10",10));
        set.add(new Card("🃏",16));
        System.out.println(set);
    }
}

//针对于扑克牌排序(♣K，♦k，♠k，♥k）
// 大小王  2 A Q J 10~3)
class Card{
    String str; //存储牌的内容
    int num; //存储牌对应的数值

    public Card(String str, int num) {
        this.str = str;
        this.num = num;
    }

    @Override
    public String toString() {
        return str;
    }
}